分类
联系方式
  1. 新浪微博
  2. E-mail

Prolog Facts

介绍

在 Prolog 中,最简单的语句是 fact。Fact 表示两个对象之间持有的关系。举例:

father(abraham, isaac)

其中:上述语句表示,Abraham 是 Isaac 的父亲。

关系的另一种叫法是 predicate。个体的名称被称为 atoms。

再举例:

plus(2, 3, 5)

表示的关系是 2+3=5。 plus 关系,对加法表中的 facts 都是满足的。这个表是无穷无尽的,比如:

plus(0, 0, 0)
plus(0, 1, 1)
plus(0, 2, 2)
……

如果这张表足够大,它是一个合法的逻辑程序,并且定义了 plus 关系。

注:但是这个也是理论上的,实际上这张表太大,就为了实现一个加法……

注2:predicates 和 atoms 都要以小写字母开头。

有限的 facts 集合构成了程序。这是最简单的逻辑程序。

示例:家谱

male(terach).
male(abraham).
male(nachor).
male(haran).
male(issac).
male(lot).

female(sarah).
female(milcah).
female(yiscah).

father(terach, abraham).
father(terach, nachor).
father(terach, haran).
father(abraham, issac).
father(haran, lot).
father(haran, milcah).
father(haran, yiscah).

mother(sarah, issac).

其中的 predicates 是 father、mother、male、female。

Universal Facts

普遍事实。假设圣经人物都喜欢石榴:

likes(abraham, pomegranates).
likes(sarah, pomegranates).
.
.
.

fact likes(X, pomegranates) 可以说是满足所有的(基于假设)。

通过这种方式,variable 概括了大量 facts。

再举例:times(0, X, 0) 概括了一条规律,即任何数字乘 0 都为 0。

基于 fact likes(X, pomegranates) ,可以推导出 likes(abraham, pomegranates)。

plus(0, X, X) 表示 0 加任何数字都是 0。